package exception;

import java.util.InputMismatchException;
import java.util.Scanner;

/**
 * 异常处理实例1
 *  除法 ： 用户输入两个整数，计算商
 */
public class Divide {
    public  static  void main(String[] args){
    int a,b,c;
    Scanner in=new Scanner(System.in);//实例化Scanner对象
    System.out.println("请输入a、b值：");//用户提示
        /**
         * 异常处理
         * 1.快捷键：Ctrl + Atl + T      或者选中异常代码，在Code中
         */
        try {
            a=in.nextInt();//输入一个整数存入变量a
            b=in.nextInt();//输入一个整数存入变量b
            c=a/b;
            System.out.println("商为："+c);
        }
        /*catch (Exception e) {
            e.printStackTrace();//异常追踪,给程序员找异常信息用的，用户则不需要，可注释掉
            System.out.println("您只能输入数字！");
        }*/

        /**
         * 以下两个catch 小括号中的异常类是Exception类的子类，
         *   即具体的异常类，只能捕获一种异常，而Exception可捕获所有异常
         *   用上一个catch就要注释下面两个catch
         *   注：一个异常一个catch，即不能把 System.out.println("您只能输入数字！");
         *      和 System.out.println("您只能输入数字！");写在一个catch里
         */
        catch (InputMismatchException e){
            e.printStackTrace();
            System.out.println("您只能输入数字！");
        }
        catch (AbstractMethodError e){
            e.printStackTrace();
            System.out.println("除数不能为零！");
        }
        /**
         * 在上面的catch写已知道的异常处理，在最后用Exeption捕获所有异常
         */
        catch (Exception e){
            System.out.println("---");
        }
        finally {//一定会执行，无论有无异常，所有可以省略
            System.out.println("程序结束！");
        }
    }

}
